**翻译状态：** 本文是英文页面 [EFI_System_Partition](/index.php/EFI_System_Partition "EFI System Partition") 的[翻译](/index.php/ArchWiki_Translation_Team_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "ArchWiki Translation Team (简体中文)")，最后翻译时间：2016-07-31，点击[这里](https://wiki.archlinux.org/index.php?title=EFI_System_Partition&diff=0&oldid=441553)可以查看翻译后英文页面的改动。

[EFI 系统分区](https://en.wikipedia.org/wiki/EFI_System_partition "wikipedia:EFI System partition")(也称为 ESP 或者 EFISYS)是一个 FAT32 格式的物理分区 (在硬盘主分区表上，而不是 LVM 或软件 RAID 等等) ，从这里 [UEFI](/index.php/UEFI "UEFI") 固件启动 UEFI 引导器和应用程序。

它与操作系统无关而是作为 EFI 固件要启动的引导器和应用程序的存储空间，是 UEFI 启动所必须。

推荐使用 GPT 和 UEFI 搭配因为有的 UEFI 固件不支持 UEFI-MBR 启动。

**Warning:** 如果在 UEFI/GPT 系统上配置 [双启动](/index.php/Dual_boot_with_Windows "Dual boot with Windows")，请不要重新格式化 UEFI 分区，因为已有的分区上包含 Windows 启动需要的 *.efi* 文件。不需要重新创建分区，只需要 [#挂载分区](#.E6.8C.82.E8.BD.BD.E5.88.86.E5.8C.BA).

## Contents

*   [1 创建分区](#.E5.88.9B.E5.BB.BA.E5.88.86.E5.8C.BA)
    *   [1.1 GPT 磁盘分区](#GPT_.E7.A3.81.E7.9B.98.E5.88.86.E5.8C.BA)
    *   [1.2 MBR 磁盘分区](#MBR_.E7.A3.81.E7.9B.98.E5.88.86.E5.8C.BA)
*   [2 挂载分区](#.E6.8C.82.E8.BD.BD.E5.88.86.E5.8C.BA)
    *   [2.1 RAID 上的 ESP](#RAID_.E4.B8.8A.E7.9A.84_ESP)
*   [3 技巧](#.E6.8A.80.E5.B7.A7)
    *   [3.1 Using bind mount](#Using_bind_mount)
*   [4 参阅](#.E5.8F.82.E9.98.85)

## 创建分区

推荐 ESP 大小为 512 MiB， 不过大一点小一点都没问题。

Microsoft 文献注解了 ESP 大小: 对高级格式化 (Advanced Format) 4K 本地驱动器 (每扇区4KB) 来说，由于 FAT32 文件格式的限制，最小为 260 MB。 FAT32 的最小分区大小可由扇区大小 (4KB) x 65527 = 算出 256 MB。高级格式化 512e 驱动器不受此限制影响，因为其虚拟扇区是 512B. 512 bytes x 65527 = 32 MB, 这比 100 MB 最小限制还要小。[[1]](http://technet.microsoft.com/en-us/library/hh824839.aspx#DiskPartitionRules)

### GPT 磁盘分区

*   **fdisk**/**gdisk**: 创建类型为 EFI System (`EFI System` (在 *fdisk* 中) 或 `ef00` (在 *gdisk* 中)的分区。然后运行 `mkfs.fat -F32 /dev/<THAT_PARTITION>` 格式化为 FAT32 格式。

(或)

*   [GNU Parted](/index.php/GNU_Parted "GNU Parted"): 创建一个 FAT32 分区然后在 Parted 中为那个分区设置/激活 `boot` 参数 (不是 `legacy_boot` 参数).

**注意:** 如果你收到消息 `WARNING: Not enough clusters for a 32 bit FAT!`, 运行 `mkfs.fat -s2 -F32 ...` 或 `-s1` 以减小簇大小，否则 UEFI 无法读取分区。

### MBR 磁盘分区

**fdisk**: 使用 fdisk 创建类型为 *EFI System* 的分区，然后运行 `mkfs.fat -F32 /dev/<THAT_PARTITION>` 格式化为 FAT32.

## 挂载分区

为防止 [EFISTUB](/index.php/EFISTUB "EFISTUB"), 内核以及 initramfs 文件应储存在 EFI 系统分区。精简起见，当以 EFISTUB 启动时你可以把 ESP 当做 `/boot` 分区而不是单独分一个 `/boot` 分区。 }}

### RAID 上的 ESP

将 ESP 包含进 RAID1 组是可行的，但是会有数据污染的危险，创建 ESP 时请三思。 细节见 [https://bbs.archlinux.org/viewtopic.php?pid=1398710#p1398710](https://bbs.archlinux.org/viewtopic.php?pid=1398710#p1398710) 和 [https://bbs.archlinux.org/viewtopic.php?pid=1390741#p1390741](https://bbs.archlinux.org/viewtopic.php?pid=1390741#p1390741).

## 技巧

### Using bind mount

除了直接将 ESP 挂载到 `/boot`，还可以将 ESP 中的某个目录 bind mount 挂载到 `/boot`(参考 `mount(8)`). 用这种方式，pacman 可以直接更新目录，而 ESP 分区上的文件可以按照需要进行放置，这个方式比文件复制要简单的多。

**Note:** 这种做法需要兼容FAT32的内核和引导。通常来说Arch都没问题， 但是其他发行版可能会有 (namely those that require symlinks in `/boot`). 讨论帖 [在这里](https://bbs.archlinux.org/viewtopic.php?pid=1331867#p1331867).

参考 [EFISTUB#Alternative ESP Mount Points](/index.php/EFISTUB#Alternative_ESP_Mount_Points "EFISTUB"), 将所有文件复制到 ESP 下的某个目录，将 ESP 挂载到 `/boot` 之外的地方 (例如 `/esp`)。然后 bind mount 目录：

```
# mount --bind /esp/EFI/arch/ /boot

```

这样 `/boot` 下就有了你需要的文件，编辑 [Fstab](/index.php/Fstab "Fstab")：

 `/etc/fstab` 
```
/esp/EFI/arch /boot none defaults,bind 0 0

```

**Warning:** 必须使用 `root=*system_root*` [内核参数](/index.php/Kernel_parameters#Parameter_list "Kernel parameters") 才能通过此方法启动。

## 参阅

*   [The EFI System Partition and the Default Boot Behavior](http://blog.uncooperative.org/blog/2014/02/06/the-efi-system-partition/)